/*=====================================================================================================================
 * 
 * Repository path:     $HeadURL: http://gpstrk.googlecode.com/svn/trunk/src/kernel.h $
 * Last committed:      $Revision: 38 $
 * Last changed by:     $Author: vladislav.gyurov@gmail.com $
 * Last changed date:   $Date: 2013-01-20 18:47:49 +0000 (Sun, 20 Jan 2013) $
 * ID:                  $Id: kernel.h 38 2013-01-20 18:47:49Z vladislav.gyurov@gmail.com $
 *
 *===================================================================================================================*/
#ifndef __KERNEL_H
#define __KERNEL_H


/*=====================================================================================================================
 * Included files to resolve specific definitions in this file                
 *===================================================================================================================*/
#include "basedef.h"
#include "kernelparam.h"

/*=====================================================================================================================
 * Constant data                                                              
 *===================================================================================================================*/

/*=====================================================================================================================
 * Exported type                                                             
 *===================================================================================================================*/
/*----- Task ID size identification -----*/
#if   (cOsTaskNumber <= 9U)
    typedef U8 tOSTaskID;
#elif (cOsTaskNumber <= 17U)
    typedef U16 tOSTaskID;
#elif (cOsTaskNumber <= 33U)
    typedef U32 tOSTaskID;
#else
    #error "The maximum task number is reached!"
#endif

typedef void (*tpOSTaskFct)(void);

/*Tick defined for an alarm object*/
typedef U16 tOSAlarmTick;

/*Alarm type*/
typedef struct
{
    tOSTaskID     TaskID;
    tOSAlarmTick  Period;
} tOSAlarm;


typedef U16      tOSClock;
typedef tOSClock tOSTimer;

/*=====================================================================================================================
 * Exported data                                                              
 *===================================================================================================================*/

/*=====================================================================================================================
 * Constant exported data                                                     
 *===================================================================================================================*/

/*=====================================================================================================================
 * Exported Macros                                                            
 *===================================================================================================================*/

/*=====================================================================================================================
 * Exported functions                     				                        
 *===================================================================================================================*/


#endif /* __KERNEL_H */
